# 导入 asyncio 库，用于异步编程
import asyncio


# 定义一个异步任务函数，接受一个参数 n
async def example_task(n):
    # 异步休眠 1 秒
    await asyncio.sleep(1)
    # 如果 n 是偶数，返回任务完成信息
    if n % 2 == 0:
        return f"Task {n} completed"
    # 否则抛出异常
    else:
        raise Exception(f"Task {n} error")


# 定义主异步函数
async def main():
    # 创建 5 个异步任务，分别传入 0 到 4
    tasks = [asyncio.create_task(example_task(i)) for i in range(5)]
    # 等待所有任务完成，done 是已完成任务集合，pending 是未完成任务集合
    done, pending = await asyncio.wait(tasks)
    # 遍历所有已完成的任务
    for task in done:
        # 如果任务有异常
        if task.exception():
            # 打印捕获到的异常信息
            print("捕获到异常:", task.exception())
        # 否则打印任务的返回结果
        else:
            print("任务结果:", task.result())


# 程序入口，判断是否为主模块运行
if __name__ == "__main__":
    # 运行主异步函数
    asyncio.run(main())
